/*
题目描述
用指向指针的指针的方法实现对5个字符串的排序和输出。本题中的排序指的是字符串的字典序。

输入
共5行，每一行有一个不包含空格的字符串。输入保证每个字符串的长度不超过100。

输出
共5行，与输入的格式相同，输出排序后的字符串。
请注意行尾输出换行。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    // 指针数组，存放5个字符串的指针
    char *str[5];
    // 指向指针的指针，指向指针数组的第一个元素
    char **p = str;
    for (int i = 0; i < 5; i++)
    {
        // 动态分配内存，存储每个字符串
        str[i] = (char *)malloc(101 * sizeof(char));
        scanf("%s", str[i]);
    }
    for (int i = 0; i < 5 - 1; i++)
    {
        for (int j = 0; j < 5 - i - 1; j++)
        {
            if (strcmp(*(p + j), *(p + j + 1)) > 0)
            {
                char *temp = *(p + j);
                *(p + j) = *(p + j + 1);
                *(p + j + 1) = temp;
            }
        }
    }
    for (int i = 0; i < 5; i++)
    {
        printf("%s\n", *(p + i));
    }
    for (int i = 0; i < 5; i++)
    {
        free(str[i]);
    }
    return 0;
}